/* 
 * @(#)PhylumBean.java 
 *  
 * Clase para la gestion de phylum.  
 * 
 * @version 1.0
 * @date 01/11/12 
 * @author Ricardo Escobar 
 *  
 */
package muhnes.sizoo.controlador;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;
import muhnes.sizoo.dal.FabricaDAO;
import muhnes.sizoo.dal.PhylumDao;
import muhnes.sizoo.modelo.Phylum;
import muhnes.sizoo.util.Transaccion;

/**
 * Clase que contiene los metodos que controlan la vista de Phylum
 * @author Ricardo Orellana
 */
@ManagedBean(name = "phylumBean")
@ViewScoped
public class PhylumBean extends CRUDBean< Phylum, PhylumDao > 
    implements Serializable {
    
    private List< SelectItem > itemsEstado;
   
    /**
     * Cosntructor de la clase
     */
    public PhylumBean() {
        super( Phylum.class );
        vistaProtegida = "phylum";
    }
  
    /**
     * Metodo que devuelve una lista de estados
     * @return onjeto list
     */
    public SelectItem[] getItemsEstado() {
      /*  if(itemsEstado == null){
            itemsEstado = new ArrayList< SelectItem >();
            itemsEstado.add( new SelectItem("", "Seleccione...") );
            itemsEstado.add( new SelectItem(true, "Habilitado") );
            itemsEstado.add( new SelectItem(false, "Deshabilitado") );
        }
        return itemsEstado
        * 
        */
        SelectItem[] itemsEstados = new SelectItem[3];
         itemsEstados[0] = new SelectItem( "", "Todos" );
        itemsEstados[1] = new SelectItem( "Habilitado", "Habilitado" );
        itemsEstados[2] = new SelectItem( "Deshabilitado", "Deshabilitado" );
        return itemsEstados;
    }

    /**
     * Metodo que elimina una entidad
     * @param event 
     */
    @Override
    public void eliminarEntidad( ActionEvent event ){
        if( !validarDependencia() ) {
            return;
        }
        
        PhylumDao phylumDao = FabricaDAO.crearPhylumDao();
        entidad.setHabilitado(Boolean.FALSE);
        phylumDao.actualizar( entidad );
        recrearModelo();
    }

    /**
     * Metodo que instancia un nuevo PhylumDao
     *  
     */
    @Override
    protected PhylumDao getDAO () {
        return FabricaDAO.crearPhylumDao();
    }

    /**
     * 
     * @param transaccion indica que transaccion se debera realizar 
     * @return objeto de tipo boolean que indica que tipo de transaccion se realizara
     */
    @Override
    protected boolean debeValidar (Transaccion transaccion) {
        boolean validacion = false;
        
        switch( transaccion ) {
            case INSERCION:
            case ACTUALIZACION:
            case ELIMINACION:
                validacion = true;
        }
        
        return validacion;
    }
   
    
}
